<?php

class Controller_Boletophp_PrintBoleto extends Controller_Template {

	public $template = 'template/boletophp';
	
	private $dadosboleto;
	private $boletoInstance;
	
	public function before(){
		
		parent::before();
		
		$this->dadosboleto = array();
		$boletoId = ( $this->request->param('id') ) ? $this->request->param('id') : null;
		
		if( $boletoId ){
			
			$this->boletoInstance = ORM::factory("boleto",$boletoId);
		
			$dias_de_prazo_para_pagamento = 0;
			$taxa_boleto = 0;
			$data_venc = $this->boletoInstance->vencimento; //date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));  // Prazo de X dias OU informe data: "13/04/2006"; 
			$valor_cobrado = $this->boletoInstance->valor; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
			$valor_cobrado = str_replace(",", ".",$valor_cobrado);
			$valor_boleto=number_format($valor_cobrado+$taxa_boleto, 2, ',', '');
			
			$this->dadosboleto["nosso_numero"] = $this->boletoInstance->nosso_numero;
			$this->dadosboleto["numero_documento"] = $this->boletoInstance->doc_cobranca;	// Num do pedido ou do documento
			$this->dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
			$this->dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
			$this->dadosboleto["data_processamento"] = date("d/m/Y"); // Data de processamento do boleto (opcional)
			$this->dadosboleto["valor_boleto"] = $valor_boleto; 	// Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula
			
			// DADOS DO SEU CLIENTE
			$this->dadosboleto["sacado"] = $this->boletoInstance->cliente->nome;
			$this->dadosboleto["endereco1"] = $this->boletoInstance->cliente->logradouro.", ".$this->boletoInstance->cliente->numero.", ".$this->boletoInstance->cliente->bairro;
			$this->dadosboleto["endereco2"] = $this->boletoInstance->cliente->cidade." - ".$this->boletoInstance->cliente->estado." -  CEP: ".$this->boletoInstance->cliente->cep;
			
			// INFORMACOES PARA O CLIENTE
			$this->dadosboleto["demonstrativo1"] = "Pagamento ao condomínio ".$this->boletoInstance->conta->condominio->nome;
			$this->dadosboleto["demonstrativo2"] = "Mensalidade referente à taxa de condomínio no valor de R$ ".number_format($valor_cobrado+$taxa_boleto, 2, ',', '');
			$this->dadosboleto["demonstrativo3"] = "BoletoPhp - http://www.boletophp.com.br";
			
			// INSTRUCOES PARA O CAIXA
			$this->dadosboleto["instrucoes1"] = "- Sr. Caixa, cobrar multa de 2% após o vencimento";
			$this->dadosboleto["instrucoes2"] = "- Receber até 10 dias após o vencimento";
			$this->dadosboleto["instrucoes3"] = "- Em caso de dúvidas entre em contato conosco: xxxx@xxxx.com.br";
			$this->dadosboleto["instrucoes4"] = "&nbsp; Emitido pelo sistema integrado com o Projeto BoletoPhp - www.boletophp.com.br";
			
			// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
			$this->dadosboleto["quantidade"] = "1";
			$this->dadosboleto["valor_unitario"] = "1";
			$this->dadosboleto["aceite"] = "N";		
			$this->dadosboleto["especie"] = "R$";
			$this->dadosboleto["especie_doc"] = "DM";
			
			// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //
			
			// DADOS DA SUA CONTA
			$this->dadosboleto["agencia"] = $this->boletoInstance->conta->agencia;  // Num da agencia, sem digito
			$this->dadosboleto["conta"] = $this->boletoInstance->conta->numero; 	// Num da conta, sem digito
			
			// DADOS PERSONALIZADOS
			$this->dadosboleto["convenio"] = $this->boletoInstance->conta->convenio;  // Num do convênio - REGRA: 6 ou 7 ou 8 dígitos
			$this->dadosboleto["contrato"] = $this->boletoInstance->conta->contrato;  // Num do seu contrato
			
			$this->dadosboleto["carteira"] = $this->boletoInstance->conta->carteira;
			$this->dadosboleto["variacao_carteira"] = $this->boletoInstance->conta->variacao_carteira;  // Variação da Carteira, com traço (opcional)
			
			// TIPO DO BOLETO
			$this->dadosboleto["formatacao_convenio"] = strlen($this->boletoInstance->conta->convenio); // REGRA: 8 p/ Convênio c/ 8 dígitos, 7 p/ Convênio c/ 7 dígitos, ou 6 se Convênio c/ 6 dígitos
			$this->dadosboleto["formatacao_nosso_numero"] = ( strlen($this->boletoInstance->nosso_numero) <= 5) ? "1" : "2"; // REGRA: Usado apenas p/ Convênio c/ 6 dígitos: informe 1 se for NossoNúmero de at� 5 dígitos ou 2 para op��o de at� 17 dígitos
			
			// SEUS DADOS
			$this->dadosboleto["identificacao"] = "BoletoPhp - Código Aberto de Sistema de Boletos";
			$this->dadosboleto["cpf_cnpj"] = $this->boletoInstance->conta->condominio->inscricao;
			$this->dadosboleto["endereco"] = $this->boletoInstance->conta->condominio->rua.", ".$this->boletoInstance->conta->condominio->numero.", ".$this->boletoInstance->conta->condominio->bairro." - ".$this->boletoInstance->conta->condominio->cep;
			$this->dadosboleto["cidade_uf"] = $this->boletoInstance->conta->condominio->cidade." / ".$this->boletoInstance->conta->condominio->estado;
			$this->dadosboleto["cedente"] = $this->boletoInstance->conta->condominio->nome;
		
		}else{
			
			# Dados de teste para carregar EXEMPLOS!!! ##########################################################################
		
			$dias_de_prazo_para_pagamento = 5;
			$taxa_boleto = 2.95;
			$data_venc = date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));  // Prazo de X dias OU informe data: "13/04/2006"; 
			$valor_cobrado = "2950,00"; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
			$valor_cobrado = str_replace(",", ".",$valor_cobrado);
			$valor_boleto=number_format($valor_cobrado+$taxa_boleto, 2, ',', '');
			
			$this->dadosboleto["nosso_numero"] = "87654";
			$this->dadosboleto["numero_documento"] = "27.030195.10";	// Num do pedido ou do documento
			$this->dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
			$this->dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
			$this->dadosboleto["data_processamento"] = date("d/m/Y"); // Data de processamento do boleto (opcional)
			$this->dadosboleto["valor_boleto"] = $valor_boleto; 	// Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula
			
			// DADOS DO SEU CLIENTE
			$this->dadosboleto["sacado"] = "Nome do seu Cliente";
			$this->dadosboleto["endereco1"] = "Endereço do seu Cliente";
			$this->dadosboleto["endereco2"] = "Cidade - Estado -  CEP: 00000-000";
			
			// INFORMACOES PARA O CLIENTE
			$this->dadosboleto["demonstrativo1"] = "Pagamento de Compra na Loja Nonononono";
			$this->dadosboleto["demonstrativo2"] = "Mensalidade referente a nonon nonooon nononon<br>Taxa bancária - R$ ".number_format($taxa_boleto, 2, ',', '');
			$this->dadosboleto["demonstrativo3"] = "BoletoPhp - http://www.boletophp.com.br";
			
			// INSTRUCOES PARA O CAIXA
			$this->dadosboleto["instrucoes1"] = "- Sr. Caixa, cobrar multa de 2% após o vencimento";
			$this->dadosboleto["instrucoes2"] = "- Receber até 10 dias após o vencimento";
			$this->dadosboleto["instrucoes3"] = "- Em caso de dúvidas entre em contato conosco: xxxx@xxxx.com.br";
			$this->dadosboleto["instrucoes4"] = "&nbsp; Emitido pelo sistema Projeto BoletoPhp - www.boletophp.com.br";
			
			// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
			$this->dadosboleto["quantidade"] = "10";
			$this->dadosboleto["valor_unitario"] = "10";
			$this->dadosboleto["aceite"] = "N";		
			$this->dadosboleto["especie"] = "R$";
			$this->dadosboleto["especie_doc"] = "DM";
			
			// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //
			
			// DADOS DA SUA CONTA
			$this->dadosboleto["agencia"] = "9999"; // Num da agencia, sem digito
			$this->dadosboleto["conta"] = "99999"; 	// Num da conta, sem digito
			
			// DADOS PERSONALIZADOS
			$this->dadosboleto["convenio"] = "7777777";  // Num do convênio - REGRA: 6 ou 7 ou 8 dígitos
			$this->dadosboleto["contrato"] = "999999"; // Num do seu contrato
			$this->dadosboleto["carteira"] = "18";
			$this->dadosboleto["variacao_carteira"] = "-019";  // Variação da Carteira, com traço (opcional)
			
			// TIPO DO BOLETO
			$this->dadosboleto["formatacao_convenio"] = "7"; // REGRA: 8 p/ Convênio c/ 8 dígitos, 7 p/ Convênio c/ 7 dígitos, ou 6 se Convênio c/ 6 dígitos
			$this->dadosboleto["formatacao_nosso_numero"] = "2"; // REGRA: Usado apenas p/ Convênio c/ 6 dígitos: informe 1 se for NossoNúmero de at� 5 dígitos ou 2 para op��o de at� 17 dígitos
			
			// SEUS DADOS
			$this->dadosboleto["identificacao"] = "BoletoPhp - Código Aberto de Sistema de Boletos";
			$this->dadosboleto["cpf_cnpj"] = "";
			$this->dadosboleto["endereco"] = "Coloque o endereço da sua empresa aqui";
			$this->dadosboleto["cidade_uf"] = "Cidade / Estado";
			$this->dadosboleto["cedente"] = "Coloque a Razão Social da sua empresa aqui";
		
		}
		
	}
	
	public function action_bancoob(){
		
		$this->dadosboleto["modalidade_cobranca"] = "01";
		$this->dadosboleto["numero_parcela"] = "001";
	
		$this->template->content = View::factory('print_boleto/bancoob' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_banespa(){
	
		$this->dadosboleto["codigo_cedente"] = "40013012168"; // Código do cedente (Somente 11 digitos)
		$this->dadosboleto["ponto_venda"] = "400"; // Ponto de Venda = Agencia 
		$this->dadosboleto["carteira"] = "COB";  // COB - SEM Registro
		$this->dadosboleto["nome_da_agencia"] = "ACLIMAÇÃO";  // Nome da agencia (Opcional)

		$this->template->content = View::factory('print_boleto/banespa' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_banestes(){
	
		$this->dadosboleto["carteira"] = "00"; // Carteira do Tipo Cobrança SEM REGISTRO (Carteira 00) - Não é Carteira 11
		$this->dadosboleto["tipo_cobranca"] = "2";  // 2- Sem registro; 
											  // 3- Caucionada; 
											  // 4,5,6 e 7-Cobrança com registro
									  
		$this->template->content = View::factory('print_boleto/banestes' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_bb(){
	
		$this->template->content = View::factory('print_boleto/bb' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_besc(){
	
		$this->dadosboleto["carteira"] = "25";  // Código da Carteira
		$this->dadosboleto["codigo_cedente"] = "01234-56";

		$this->template->content = View::factory('print_boleto/besc' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_bradesco(){
	
		$this->dadosboleto["conta_dv"] = "2"; 	// Digito do Num da conta
		$this->dadosboleto["agencia_dv"] = "2"; 	// Digito do Num da agencia
		
		$this->dadosboleto["conta_cedente"] = "001131"; // ContaCedente do Cliente, sem digito (Somente 6 digitos)
		$this->dadosboleto["conta_cedente_dv"] = "3"; 		 // Digito da ContaCedente do Cliente

		$this->template->content = View::factory('print_boleto/bradesco' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_cef(){
		
		$this->dadosboleto["inicio_nosso_numero"] = "80";  	// Carteira SR: 80, 81 ou 82
															// Carteira CR: 90 (Confirmar com gerente qual usar)
		$this->dadosboleto["conta_dv"] = "4"; 				// Digito do Num da conta
		
		// DADOS PERSONALIZADOS - CEF
		$this->dadosboleto["conta_cedente"] = "87000000414"; // ContaCedente do Cliente, sem digito (Somente Números)
		$this->dadosboleto["conta_cedente_dv"] = "3"; 		 // Digito da ContaCedente do Cliente
		$this->dadosboleto["carteira"] = "SR"; 				 // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
		
		$this->template->content = View::factory('print_boleto/cef' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_cefSigcb(){
		
		// Composição Nosso Numero - CEF SIGCB
		$this->dadosboleto["nosso_numero1"] = "000"; // tamanho 3
		$this->dadosboleto["nosso_numero_const1"] = "2"; //constanto 1 , 1=registrada , 2=sem registro
		$this->dadosboleto["nosso_numero2"] = "000"; // tamanho 3
		$this->dadosboleto["nosso_numero_const2"] = "4"; //constanto 2 , 4=emitido pelo proprio cliente
		$this->dadosboleto["nosso_numero3"] = "000000019"; // tamanho 9
		
		$this->dadosboleto["conta_dv"] = "4"; 				// Digito do Num da conta
		
		// DADOS PERSONALIZADOS - CEF
		$this->dadosboleto["conta_cedente"] = "87000000414"; // ContaCedente do Cliente, sem digito (Somente Números)
		$this->dadosboleto["conta_cedente_dv"] = "3"; 		 // Digito da ContaCedente do Cliente
		$this->dadosboleto["carteira"] = "SR"; 				 // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
		
		$this->template->content = View::factory('print_boleto/cefSigcb' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_cefSinco(){
	
		$this->dadosboleto["inicio_nosso_numero"] = "9";		// Inicio do Nosso numero - obrigatoriamente deve começar com 9;
		$this->dadosboleto["campo_fixo_obrigatorio"] = "1";     // campo fixo obrigatorio - valor = 1
		$this->dadosboleto["conta_dv"] = "4"; 					// Digito do Num da conta
		
		// DADOS PERSONALIZADOS - CEF
		$this->dadosboleto["conta_cedente"] = "87000000414"; // ContaCedente do Cliente, sem digito (Somente Números)
		$this->dadosboleto["conta_cedente_dv"] = "3"; 		 // Digito da ContaCedente do Cliente
		$this->dadosboleto["carteira"] = "SR"; 				 // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
		
		$this->template->content = View::factory('print_boleto/cefSinco' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_hsbc(){
		
		$this->dadosboleto["codigo_cedente"] = "1122334"; // Código do Cedente (Somente 7 digitos)
		$this->dadosboleto["carteira"] = "CNR";  // Código da Carteira
	
		$this->template->content = View::factory('print_boleto/hsbc' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_itau(){
		
		$this->dadosboleto["conta_dv"] = "4"; 	// Digito do Num da conta
	
		$this->template->content = View::factory('print_boleto/itau' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_nossacaixa(){
		
		$this->dadosboleto["inicio_nosso_numero"] = "99";  // Inicio do Nosso numero -> 99 - Cobrança Direta(Carteira 5) ou 0 - Cobrança Simples(Carteira 1)
		
		// DADOS PERSONALIZADOS - CEF
		$this->dadosboleto["agencia"] = "0033"; // Num da agencia, sem digito
		$this->dadosboleto["conta_cedente"] = "001131"; // ContaCedente do Cliente, sem digito (Somente 6 digitos)
		$this->dadosboleto["conta_cedente_dv"] = "1"; // Digito da ContaCedente do Cliente
		$this->dadosboleto["carteira"] = "5";  // Código da Carteira -> 5-Cobrança Direta ou 1-Cobrança Simples
		$this->dadosboleto["modalidade_conta"] = "04";  // modalidade da conta 02 posições
	
		$this->template->content = View::factory('print_boleto/nossacaixa' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_real(){
	
		$this->template->content = View::factory('print_boleto/real' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_santanderBanespa(){
		
		// DADOS PERSONALIZADOS - SANTANDER BANESPA
		$this->dadosboleto["codigo_cliente"] = "0707077"; // Código do Cliente (PSK) (Somente 7 digitos)
		$this->dadosboleto["ponto_venda"] = "1333"; // Ponto de Venda = Agencia
		$this->dadosboleto["carteira"] = "102";  // Cobrança Simples - SEM Registro
		$this->dadosboleto["carteira_descricao"] = "COBRANÇA SIMPLES - CSR";  // Descrição da Carteira
	
		$this->template->content = View::factory('print_boleto/santanderBanespa' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_sicredi(){
		
		$this->dadosboleto["inicio_nosso_numero"] = date("y");	// Ano da geração do título ex: 07 para 2007 
		$this->dadosboleto["conta_dv"] = "6"; 	// Digito Verificador do Num da conta
		
		// DADOS PERSONALIZADOS - SICREDI
		$this->dadosboleto["posto"]= "18";      // Código do posto da cooperativa de crédito
		$this->dadosboleto["byte_idt"]= "2";	  // Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
		                                  // 1 - Idtf emitente: Cooperativa | 2 a 9 - Idtf emitente: Cedente
		$this->dadosboleto["carteira"] = "A";   // Código da Carteira: A (Simples) 
	
		$this->template->content = View::factory('print_boleto/sicredi' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_sudameris(){
	
		$this->template->content = View::factory('print_boleto/sudameris' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function action_unibanco(){
		
		$this->dadosboleto["conta_dv"] = "9"; 	// Digito do Num da conta
		
		// DADOS PERSONALIZADOS - UNIBANCO
		$this->dadosboleto["codigo_cliente"] = "2031671"; // Codigo do Cliente
		$this->dadosboleto["carteira"] = "20";  // Código da Carteira
	
		$this->template->content = View::factory('print_boleto/unibanco' );
		$this->template->content->dadosboleto = $this->dadosboleto;
	
	}
	
	public function after() {
		
		//echo "<script>setTimeout('print()',1000);</script>";
		
		parent::after();
		
	}
	
}

?>